home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / GNUGEM27 / VDIQGDOS.C < prev    next >
C/C++ Source or Header  |  1993-03-24  |  1KB  |  74 lines

  1. /*
  2.  *    vqgdos - enquire if GDOS is loaded or not
  3.  *         (The source I got it from says, that this is the
  4.  *          Atari official method)
  5.  *
  6.  *            ++fgth    ridderbusch.pad@nixdorf.com
  7.  */
  8.  
  9.  
  10. #ifdef __DEF_ALL__
  11.  
  12. #define L_vq_gdos
  13. #define L_vq_vgdos
  14.  
  15. #endif /* __DEF_ALL__ */
  16.  
  17.  
  18. #ifdef L_vq_gdos
  19.  
  20. int
  21. vq_gdos(void)
  22. {
  23.   register int retvalue __asm__("d0");
  24.  
  25. #ifdef __MSHORT__
  26.   __asm__ volatile
  27.     ("  movw    #-2,d0
  28.     trap    #2
  29.     cmpw    #-2,d0
  30.     sne d0
  31.     extw    d0"
  32.      : "=r"(retvalue)       /* output */
  33.      :                /* no input */
  34.      : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */
  35.      );
  36. #else
  37.   __asm__ volatile
  38.     ("  movw    #-2,d0
  39.     trap    #2
  40.     cmpw    #-2,d0
  41.     sne d0
  42.     extw    d0
  43.     extl    d0"
  44.      : "=r"(retvalue)       /* output */
  45.      :                /* no input */
  46.      : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */
  47.      );
  48. #endif
  49.  
  50.   return retvalue;
  51. }
  52. #endif /* L_vq_gdos */
  53.  
  54. #ifdef L_vq_vgdos
  55.  
  56. /*
  57.  * return type of GDOS
  58.  * -2L     no GDOS installed
  59.  *    0x5F46534DL  '_FSM' gdos
  60.  *    0x5F464E54L  '_FNT' gdos
  61.  */
  62. unsigned long vq_vgdos(void)
  63. {
  64.     register unsigned long ret __asm__("d0");
  65.     __asm__ volatile ("
  66.     movq    #-2,d0
  67.     trap    #2"
  68.       : "=r"(ret)
  69.           :
  70.           : "d0", "d1", "d2", "a0", "a1", "a2" );
  71.     return ret;
  72. }
  73. #endif /* L_vq_vgdos */
  74.